from core.basic.skill import 技能
from core.basic.character import Character
from core.basic.skill import 主动技能, 被动技能


class 主动技能(主动技能):
    风雷啸 = 1.0

    def 等效百分比(self, **argv):
        return super().等效百分比(**argv)*self.风雷啸


class 技能0(被动技能):  # 基础精通
    名称 = '基础精通'
    倍率 = 1.0

    所在等级 = 1
    等级上限 = 200
    学习间隔 = 1
    等级精通 = 110

    关联技能 = ['念兽：龙虎啸']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(self.倍率 * (0.463 + 0.089 * self.等级), 5)


class 技能1(主动技能):  # 分身
    名称 = '分身'
    所在等级 = 5
    等级上限 = 20
    学习间隔 = 2
    等级精通 = 10
    MP = [6, 84]
    基础个数 = 0
    是否有伤害 = 0
    TP上限 = 0
    关联技能 = ['幻影爆碎']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 0
        else:
            return self.等级 + 1


class 技能2(主动技能):  # 雷霆踏
    名称 = '雷霆踏'
    所在等级 = 15
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [20, 168]
    data0 = [0, 5237, 5767, 6300, 6831, 7362, 7893, 8424, 8956, 9488, 10019, 10550, 11081, 11613, 12144, 12675, 13205, 13738, 14270, 14800, 15332, 15864, 16395, 16925, 17458, 17988, 18520, 19051, 19582, 20113, 20646, 21175, 21707, 22238, 22771, 23301, 23833, 24365, 24896, 25427, 25957, 26490, 27021, 27552, 28083, 28615, 29146, 29678, 30209, 30739, 31271, 31804, 32333, 32865, 33398, 33928, 34459, 34991, 35522, 36054, 36584, 37116, 37647, 38179, 38708, 39241, 39772, 40303, 40834, 41366, 41898]
    hit0 = 1
    感电data0 = [0, 646, 712, 777, 845, 911, 975, 1040, 1106, 1173, 1238, 1303, 1369, 1435, 1501, 1565, 1631, 1698, 1763, 1828, 1894, 1961, 2026, 2092, 2157, 2222, 2289, 2354, 2420, 2485, 2551, 2617, 2683, 2747, 2813, 2879, 2944, 3011, 3078, 3142, 3208, 3274, 3340, 3405, 3471, 3536, 3601, 3668, 3732, 3798, 3863, 3930, 3996, 4060, 4127, 4194, 4260, 4324, 4390, 4457, 4521, 4587, 4651, 4717, 4784, 4849, 4915, 4980, 5046, 5112, 5179]
    感电hit0 = 1
    CD = 7.0
    TP成长 = 0.10
    TP上限 = 7


class 技能3(主动技能):  # 念气波
    名称 = '念气波'
    所在等级 = 15
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [15, 154]
    data0 = [0, 2020, 2225, 2431, 2634, 2839, 3045, 3249, 3454, 3660, 3865, 4069, 4273, 4479, 4683, 4889, 5093, 5299, 5503, 5710, 5914, 6119, 6324, 6528, 6734, 6938, 7143, 7348, 7554, 7759, 7964, 8168, 8374, 8578, 8783, 8988, 9192, 9398, 9603, 9809, 10013, 10219, 10423, 10626, 10833, 11037, 11241, 11447, 11653, 11857, 12063, 12268, 12471, 12677, 12882, 13086, 13292, 13498, 13701, 13908, 14112, 14316, 14522, 14726, 14931, 15136, 15342, 15546, 15753, 15957, 16162]
    hit0 = 1
    感电data0 = [0, 225, 247, 270, 292, 315, 337, 362, 384, 406, 428, 450, 474, 496, 520, 542, 565, 588, 611, 633, 656, 679, 703, 725, 747, 769, 792, 814, 839, 861, 884, 906, 929, 952, 976, 998, 1021, 1043, 1067, 1089, 1111, 1135, 1157, 1179, 1203, 1225, 1248, 1270, 1295, 1318, 1341, 1363, 1386, 1408, 1432, 1455, 1478, 1499, 1522, 1544, 1568, 1590, 1614, 1636, 1659, 1682, 1705, 1727, 1751, 1773, 1797]
    感电hit0 = 1
    CD = 2.5
    TP成长 = 0.10
    TP上限 = 7


class 技能4(主动技能):  # 蓄念炮 是被动不能受1-35主动技能+xx的加成
    名称 = '蓄念炮'

    所在等级 = 20
    等级上限 = 11
    学习间隔 = 2
    等级精通 = 1

    MP = [40, 56]
    CD = 8.0

    是否主动 = 0

    TP上限 = 1

    # 这里需要加一个蓄念炮的tp
    # 蓄念炮TP的加成倍率和蓄念炮本身等级有关，从1到11级各不相同
    # 蓄念炮TP下的蓄念炮倍率为(0.18+蓄念炮等级*0.01)*14;无tp下蓄念炮倍率为(2.59+蓄念炮等级*0.06)
    # 两者相除即是蓄念炮TP所带来的额外倍率
    # 上述描述是针对念气波直伤部分的，关于蓄念炮TP感电部分的额外倍率为(1/(2.59+蓄念炮等级*0.06))；

    def 等效百分比(self, **argv):
        # 武器类型 额外等级 额外倍率 伤害类型 形态
        武器类型 = argv.get('武器类型', '')
        额外等级 = argv.get('额外等级', 0)
        额外倍率 = argv.get('额外倍率', 1.0)
        伤害类型 = argv.get('伤害类型', '直伤')
        形态 = argv.get('形态', '')
        char = argv.get('char', {})

        百分比 = char.get_skill_by_name("念气波").等效百分比(伤害类型=伤害类型)

        if self.等级 == 0:
            倍率 = 1.0
        else:
            倍率 = round(2.59 + 0.06 * self.等级, 5)
        if self.TP等级 > 0:
            倍率 = (0.18+self.等级*0.01)*14

        return 百分比 * 倍率 * self.技攻 * self.倍率 * 额外倍率


# 幻爆的伤害实质属于被动技能，不能受1-35主动技能+xx的加成
# MP消耗也是按分身的等级来
class 技能5(主动技能):
    名称 = '幻影爆碎'
    是否主动 = 0
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    是否主动 = 0
    data0 = [0, 1030, 1134, 1238, 1342, 1448, 1552, 1656, 1761, 1866, 1970, 2074, 2179, 2284, 2388, 2493, 2597, 2702, 2806, 2910, 3013, 3119, 3223, 3328, 3433, 3537, 3643, 3746, 3851, 3955, 4061, 4163, 4269, 4374, 4479, 4582, 4687, 4792, 4895, 4999, 5105, 5209, 5314, 5417, 5523, 5626, 5732, 5836, 5941, 6046, 6150, 6255, 6359, 6464, 6568, 6674, 6777, 6881, 6986, 7089, 7194, 7299, 7404, 7507, 7612, 7718, 7821, 7926, 8031, 8136, 8240]
    CD = 12
    TP成长 = 0.10
    TP上限 = 7



class 技能6(主动技能):  # 念雷轰  #data部分需后续核对
    名称 = '念雷轰'
    所在等级 = 25
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [20, 168]  # 计算可得
    data0 = [0, 1384, 1524, 1665, 1805, 1945, 2085, 2227, 2367, 2507, 2647, 2789, 2930, 3071, 3211, 3351, 3491, 3632, 3773, 3913, 4053, 4193, 4335, 4475, 4615, 4755, 4895, 5036, 5177, 5317, 5457, 5598, 5738, 5881, 6021, 6161, 6301, 6441, 6583, 6723, 6863, 7003, 7144, 7285, 7425, 7565, 7705, 7846, 7986, 8127, 8267, 8408, 8548, 8688, 8829, 8971, 9111, 9251, 9392, 9533, 9673, 9813, 9954, 10094, 10235, 10375, 10515, 10656, 10796, 10936, 11077]
    hit0 = 4
    感电data0 = [0, 152, 169, 184, 200, 215, 232, 247, 262, 277, 293, 309, 325, 340, 355, 372, 387, 402, 418, 434, 450, 465, 480, 495, 513, 528, 544, 559, 576, 591, 606, 621, 636, 653, 668, 684, 699, 716, 731, 746, 761, 778, 793, 809, 824, 839, 856, 871, 886, 902, 918, 934, 949, 964, 979, 996, 1011, 1027, 1042, 1059, 1074, 1089, 1104, 1121, 1136, 1152, 1167, 1182, 1199, 1214, 1229]
    感电hit0 = 4
    CD = 7
    TP成长 = 0.10
    TP上限 = 7


class 技能7(主动技能):
    名称 = '念气环绕'
    所在等级 = 20
    等级上限 = 35
    学习间隔 = 3
    等级精通 = 25
    MP = [5, 210]
    关联技能 = ['所有']
    data0 = [0, 70, 83, 93, 107, 116, 129, 139, 152, 163, 175, 185, 198, 207, 221, 233, 244, 254, 266, 279, 289, 301, 312, 324, 335, 347, 358, 370, 380, 393, 404, 415, 426, 438, 450, 461]
    # 念气环绕 开御（全程）一秒10次
    hit0 = 1
    CD = 4
    关联技能1 = ['念气环绕：御']

    def 加成倍率1(self, 武器类型):
        return self.data0[self.等级]/100

    def 加成倍率(self, 武器类型):
        if (self.等级 <= 25):
            return round(1.00 + 0.01 * self.等级, 5)
        else:
            return round(1.25 + 0.02 * (self.等级 - 25), 5)


class 技能8(主动技能):  # 念气环绕：袭
    名称 = '念气环绕：袭'
    所在等级 = 25
    等级上限 = 11
    学习间隔 = 2
    等级精通 = 1
    MP = [75, 630]
    data0 = [0, 23132, 23624, 24118, 24611, 25105, 25599, 26092, 26585, 27079, 27573, 28066]
    hit0 = 1
    CD = 4.5


class 技能9(主动技能):
    名称 = '念气环绕：御'
    所在等级 = 30
    等级上限 = 11
    学习间隔 = 2
    等级精通 = 1
    MP = [200, 980]
    # 这里的data0实质上是倍率；念气环绕里有个对念气环绕：御额外加成倍率，那个是技能百分比
    data0 = [0, 151, 154, 157, 160, 163, 166, 169, 172, 175, 178, 181]
    # 念气环绕：御  一秒10次
    hit0 = 10
    CD = 1


# 其风雷啸部分需要后续确认
class 技能10(主动技能):
    名称 = "天雷虎踢"
    所在等级 = 35
    学习间隔 = 2
    等级上限 = 70
    等级精通 = 60

    data0 = [0, 6430, 7082, 7734, 8386, 9038, 9692, 10344, 10997, 11649, 12301, 12953, 13605, 14258, 14910, 15563, 16214, 16867, 17519, 18171, 18825, 19477, 20129, 20781, 21434, 22086, 22738, 23391, 24042, 24695, 25347, 26000, 26653, 27305, 27958, 28609, 29262, 29914, 30567, 31219, 31871, 32523, 33175, 33828, 34480, 35134, 35786, 36437, 37090, 37742, 38395, 39047, 39700, 40352, 41003, 41656, 42308, 42961, 43614, 44267, 44918, 45570, 46223, 46875, 47528, 48180, 48832, 49484, 50136, 50789, 51441]
    hit0 = 1
    data1 = [0, 228, 252, 274, 299, 323, 346, 369, 393, 415, 439, 463, 485, 509, 533, 555, 579, 601, 625, 649, 671, 695, 719, 741, 765, 788, 811, 835, 858, 881, 904, 928, 951, 974, 997, 1021, 1044, 1067, 1090, 1114, 1137, 1160, 1184, 1207, 1230, 1255, 1278, 1301, 1325, 1348, 1371, 1394, 1417, 1441, 1464, 1487, 1511, 1534, 1557, 1581, 1603, 1627, 1651, 1673, 1697, 1721, 1743, 1767, 1789, 1813, 1837]
    hit1 = 8
    感电data0 = [0, 113, 125, 137, 150, 161, 173, 185, 196, 208, 220, 231, 243, 254, 266, 278, 289, 301, 313, 324, 336, 348, 359, 371, 382, 394, 406, 417, 429, 440, 452, 464, 476, 487, 498, 510, 522, 534, 546, 557, 568, 580, 592, 604, 615, 626, 638, 650, 662, 674, 684, 696, 708, 720, 732, 742, 754, 766, 778, 790, 802, 812, 824, 836, 848, 860, 870, 882, 894, 906, 918]
    感电hit0 = 8
    风雷啸 = 1.70  # 风雷啸
    CD = 17.0
    TP成长 = 0.10
    TP上限 = 5

    MP = [120, 1008]
    无色消耗 = 1

    形态 = ['风雷啸', '普通']

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "风雷啸":
            self.风雷啸 = 1.70
        if 形态 == "普通":
            self.风雷啸 = 1.00


class 技能11(主动技能):  # 狮子吼
    名称 = '狮子吼'
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [0, 7866, 8664, 9463, 10260, 11058, 11856, 12653, 13452, 14250, 15048, 15846, 16645, 17442, 18240, 19038, 19836, 20636, 21432, 22231, 23029, 23827, 24625, 25424, 26220, 27020, 27816, 28615, 29413, 30212, 31009, 31807, 32606, 33403, 34203, 34999, 35798, 36596, 37394, 38192, 38991, 39787, 40587, 41384, 42183, 42980, 43780, 44575, 45374, 46172, 46970, 47767, 48567, 49363, 50163, 50959, 51759, 52556, 53354, 54153, 54951, 55749, 56547, 57345, 58143, 58941, 59740, 60538, 61334, 62134, 62930]
    hit0 = 1
    风雷啸 = 1.70  # 风雷啸
    CD = 17
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [120, 1008]
    无色消耗 = 1

    形态 = ['风雷啸', '普通']

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "风雷啸":
            self.风雷啸 = 1.70
        if 形态 == "普通":
            self.风雷啸 = 1.00

    def 装备护石(self, char):
        self.倍率 *= 1.37


class 技能12(主动技能):  # 螺旋念气场
    名称 = '螺旋念气场'
    所在等级 = 40
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [0, 718, 792, 863, 938, 1010, 1084, 1157, 1229, 1303, 1375, 1448, 1520, 1594, 1668, 1739, 1815, 1888, 1961, 2035, 2106, 2180, 2252, 2325, 2398, 2471, 2545, 2616, 2691, 2764, 2837, 2909, 2982, 3056, 3128, 3201, 3274, 3347, 3420, 3492, 3566, 3640, 3713, 3785, 3858, 3931, 4004, 4077, 4150, 4223, 4296, 4368, 4441, 4514, 4588, 4661, 4734, 4807, 4880, 4952, 5026, 5098, 5172, 5244, 5317, 5390, 5463, 5537, 5609, 5683, 5756]
    hit0 = 17
    风雷啸 = 1.70  # 风雷啸
    感电data0 = [0, 322, 353, 386, 420, 451, 483, 519, 550, 583, 616, 648, 681, 713, 745, 779, 811, 844, 876, 909, 941, 974, 1008, 1039, 1072, 1105, 1137, 1169, 1204, 1235, 1269, 1302, 1333, 1367, 1399, 1432, 1464, 1497, 1531, 1562, 1594, 1628, 1660, 1692, 1726, 1758, 1791, 1824, 1856, 1890, 1922, 1953, 1988, 2020, 2052, 2085, 2118, 2150, 2182, 2217, 2249, 2280, 2313, 2347, 2378, 2411, 2446, 2478, 2510, 2542, 2576]
    感电hit0 = 2
    CD = 20.0
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [170, 1428]
    无色消耗 = 1

    形态 = ['风雷啸', '普通']

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "风雷啸":
            # 感电部分不受风雷啸加成；但是风雷啸是螺旋球体*5，每个伤害为原来总伤(含感电)的14%；所以直伤的占比会上升
            # 无风雷啸时，感电为直伤的4.9975%
            self.风雷啸 = 1.70
            self.power0 = 1.049975
            self.感电power0 = 1/1.70
        if 形态 == "普通":
            self.风雷啸 = 1.00
            self.power0 = 1.00
            self.感电power0 = 1.00

    def 装备护石(self, char):  # 1.09 0.83
        self.倍率 *= 1.18
        self.CDR *= 0.83


class 技能13(主动技能):  # 念兽：龙虎啸
    名称 = '念兽：龙虎啸'
    所在等级 = 30
    等级上限 = 20
    学习间隔 = 3
    等级精通 = 10
    MP = [357, 2911]
    # 第1击魔法武器攻击力：<int>%
    data0 = [0, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160]
    hit0 = 1
    # 第2击魔法武器攻击力：<int>%
    data1 = [0, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180]
    hit1 = 1
    # 第3击魔法武器攻击力：<int>%
    data2 = [0, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200]
    hit2 = 1
    # 第4击魔法武器攻击力：<int>%
    data3 = [0, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220]
    hit3 = 1
    # 第5击魔法武器攻击力：<int>%
    data4 = [0, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240]
    hit4 = 1
    # 感电只有最后一击才会赋予
    感电data0 = [0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14]
    感电hit0 = 1
    CD = 1.0

    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        elif self.等级 < 7:
            return round(1.17 + 0.01 * self.等级, 5)
        else:
            return round(1.3 + 0.02 * (self.等级-10), 5)


class 技能14(主动技能):  # 念兽：猛虎震地  CP武器 爆炸=多段（多段*2）
    名称 = '念兽：猛虎震地'
    所在等级 = 45
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [0, 2653, 2924, 3192, 3461, 3732, 4000, 4270, 4539, 4807, 5078, 5347, 5615, 5886, 6154, 6426, 6693, 6962, 7233, 7500, 7772, 8040, 8310, 8579, 8847, 9118, 9386, 9657, 9925, 10194, 10464, 10733, 11002, 11272, 11540, 11810, 12080, 12348, 12618, 12887, 13156, 13426, 13695, 13965, 14233, 14504, 14773, 15042, 15311, 15580, 15850, 16118, 16389, 16657, 16928, 17196, 17464, 17735, 18004, 18273, 18542, 18813, 19081, 19351, 19620, 19888, 20159, 20428, 20698, 20966, 21236]
    hit0 = 4
    data1 = [0, 10617, 11696, 12771, 13849, 14926, 16004, 17082, 18157, 19236, 20312, 21390, 22466, 23545, 24621, 25699, 26775, 27852, 28930, 30008, 31084, 32162, 33238, 34317, 35392, 36470, 37548, 38626, 39702, 40779, 41857, 42933, 44011, 45087, 46166, 47243, 48319, 49397, 50475, 51551, 52628, 53705, 54783, 55861, 56937, 58015, 59092, 60169, 61246, 62322, 63400, 64479, 65554, 66632, 67709, 68787, 69862, 70941, 72019, 73096, 74172, 75249, 76328, 77403, 78481, 79559, 80636, 81713, 82789, 83867, 84944]
    hit1 = 1
    风雷啸 = 1.7  # 风雷啸，分成4段
    CD = 45
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [450, 3780]
    无色消耗 = 2

    形态 = ['风雷啸', '普通']

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "风雷啸":
            self.风雷啸 = 1.70
            if '念兽：猛虎震地' in char.护石栏:
                self.风雷啸 = 1.49+0.7
        if 形态 == "普通":
            self.风雷啸 = 1.00
            if '念兽：猛虎震地' in char.护石栏:
                self.风雷啸 = 1.49

    def 装备护石(self, char):  # 风雷啸部分不受护石的加成
        pass


class 技能15(被动技能):  # 念之奥义 一觉被动
    名称 = '念之奥义'
    所在等级 = 48
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    关联技能 = ['所有']

    # 增伤倍率 *= 1 + self.暴击伤害
    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.055 + 0.015 * self.等级, 5)


class 技能16(主动技能):  # 念兽：审判之金雷虎 一觉
    名称 = '念兽：审判之金雷虎'
    所在等级 = 50
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    # 金雷虎身体攻击力：<data0>%
    data0 = [0, 2745, 3380, 4018, 4653, 5291, 5926, 6563, 7199, 7836, 8472, 9109, 9747, 10382, 11020, 11655, 12293, 12928, 13566, 14201, 14838, 15474, 16111, 16747, 17384, 18020, 18657, 19294, 19930, 20568, 21203, 21841, 22476, 23113, 23749, 24387, 25023, 25660, 26296, 26933, 27570, 28206, 28842, 29479, 30115, 30752, 31389, 32025, 32662, 33298, 33935]
    hit0 = 6
    # 金雷虎落地时的冲击波攻击力：<data1>%
    data1 = [0, 7450, 9176, 10905, 12633, 14360, 16088, 17817, 19544, 21271, 22999, 24727, 26455, 28181, 29909, 31638, 33365, 35092, 36820, 38549, 40276, 42004, 43732, 45460, 47189, 48913, 50641, 52370, 54097, 55825, 57553, 59281, 61009, 62738, 64463, 66192, 67919, 69646, 71374, 73104, 74830, 76559, 78285, 80013, 81742, 83468, 85196, 86925, 88653, 90381, 92106]
    hit1 = 3
    # 金雷虎爆炸攻击力：<data2>%
    data2 = [0, 19998, 24637, 29273, 33911, 38549, 43187, 47824, 52462, 68520, 74082, 79649, 85215, 90778, 96345, 101911, 107473, 113038, 118605, 124169, 129734, 135301, 140863, 146428, 151992, 157559, 163124, 168688, 174254, 179819, 185383, 190949, 196515, 202079, 207644, 213210, 218774, 224340, 229905, 235470, 241035, 246600, 252165, 257730, 263295, 268860, 274426, 279989, 285554, 291120, 296685]
    hit2 = 1
    CD = 145

    MP = [900, 7560]
    无色消耗 = 5


class 技能17(主动技能):  # 念之战矛
    名称 = '念之战矛'
    所在等级 = 60
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 4085, 4498, 4914, 5327, 5742, 6157, 6569, 6984, 7397, 7813, 8227, 8641, 9056, 9471, 9884, 10300, 10712, 11127, 11542, 11956, 12372, 12787, 13200, 13616, 14030, 14444, 14859, 15271, 15686, 16101, 16515, 16929, 17343, 17758, 18173, 18586, 19002, 19416, 19829, 20244, 20658, 21072, 21488, 21901, 22316, 22731, 23144, 23559, 23973, 24387]
    hit0 = 1
    data1 = [0, 16337, 17996, 19651, 21310, 22967, 24625, 26282, 27940, 29597, 31255, 32912, 34570, 36226, 37885, 39542, 41199, 42857, 44515, 46171, 47830, 49488, 51145, 52803, 54460, 56116, 57775, 59431, 61089, 62747, 64405, 66062, 67721, 69377, 71034, 72692, 74349, 76006, 77664, 79322, 80980, 82637, 84295, 85952, 87609, 89266, 90924, 92582, 94240, 95896, 97555]
    hit1 = 1
    感电data0 = [0, 15, 16, 17, 18, 20, 22, 23, 24, 25, 26, 28, 30, 31, 32, 33, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 49, 52, 53, 54, 55, 56, 58, 60, 61, 62, 63, 64, 67, 69, 70, 71, 72, 74, 75, 76, 77, 78, 80, 82, 84]
    感电hit0 = 1
    风雷啸 = 1.7  # 风雷啸
    CD = 30
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [450, 1260]
    无色消耗 = 1

    形态 = ['风雷啸', '普通']

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "风雷啸":
            self.风雷啸 = 1.70
            if '念之战矛' in char.护石栏:
                # 护石会删除掉本体的伤害，但不会删除风雷啸的部分
                # 但同样，护石也只会加成本体的伤害，不会加成风雷啸的伤害
                self.power1 = (1.99+0.7)/1.7
        if 形态 == "普通":
            self.风雷啸 = 1.00
            if '念之战矛' in char.护石栏:
                self.power1 = 1.99

    def 装备护石(self, char):
        self.hit0 = 0
        self.hit1 = 1
        self.感电hit0 = 0
        pass

class 技能18(主动技能):  # 冲云念气场
    名称 = '冲云念气场'
    所在等级 = 70
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 4728, 5207, 5686, 6167, 6645, 7126, 7605, 8086, 8565, 9044, 9523, 10003, 10482, 10963, 11441, 11921, 12401, 12881, 13361, 13841, 14321, 14800, 15280, 15758, 16239, 16717, 17198, 17678, 18156, 18636, 19117, 19595, 20076, 20555, 21036, 21513, 21993, 22474, 22953, 23433, 23913, 24393, 24871, 25352, 25831, 26311, 26791, 27271, 27749, 28228]
    hit0 = 6
    感电data0 = [0, 584, 644, 704, 761, 821, 879, 939, 998, 1057, 1117, 1176, 1235, 1294, 1354, 1414, 1472, 1532, 1591, 1651, 1710, 1768, 1828, 1887, 1946, 2007, 2066, 2126, 2185, 2244, 2303, 2363, 2423, 2481, 2541, 2599, 2659, 2718, 2777, 2837, 2896, 2954, 3013, 3074, 3134, 3191, 3251, 3310, 3370, 3428, 3487]
    感电hit0 = 6
    风雷啸 = 1.7  # 风雷啸
    CD = 50
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [800, 1680]
    无色消耗 = 2

    形态 = ['风雷啸', '普通']

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "风雷啸":
            self.风雷啸 = 1.70
            if '冲云念气场' in char.护石栏:
                # 护石会直接取代原本风雷啸的加成
                self.风雷啸 = 2.3
        if 形态 == "普通":
            self.风雷啸 = 1.00

    def 装备护石(self, char):
        pass


class 技能19(主动技能):  # 奔雷螺旋击
    名称 = '奔雷螺旋击'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 66727, 73495, 80266, 87035, 93805, 100575, 107345, 114114, 120883, 127651, 134421, 141191, 147961, 154731, 161499, 168269, 175039, 181809, 188578, 195347, 202116, 208886, 215655, 222425, 229195, 235964, 242733, 249504, 256272, 263041, 269810, 276580, 283349, 290120, 296889, 303660, 310427, 317197, 323967, 330737, 337505, 344276, 351043, 357814, 364583, 371353, 378124, 384893, 391662, 398432]
    hit0 = 1
    风雷啸 = 1.7  # 风雷啸
    CD = 42
    是否有护石 = 1

    形态 = ['风雷啸', '普通']

    def 形态变更(self, 形态, char: Character):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "风雷啸":
            self.风雷啸 = 1.70
            if '奔雷螺旋击' in char.护石栏:
                # 护石会直接取代原本风雷啸的加成
                self.风雷啸 = 2.15
        if 形态 == '普通':
            self.风雷啸 = 1.00

    MP = [170, 1428]
    无色消耗 = 3

    def 装备护石(self, char):
        pass


class 技能20(主动技能):  # 月辉念气破
    名称 = '月辉念气破'
    所在等级 = 80
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 8834, 9729, 10625, 11522, 12419, 13315, 14209, 15107, 16002, 16900, 17796, 18691, 19588, 20485, 21382, 22276, 23173, 24069, 24966, 25860, 26758, 27653, 28550, 29446, 30342, 31238, 32135, 33032, 33927, 34824, 35720, 36616, 37510, 38409, 39304, 40201, 41097, 41992, 42889, 43786, 44681, 45578, 46474, 47371, 48266, 49162, 50058, 50955, 51852, 52747]
    hit0 = 10
    CD = 45
    是否有护石 = 1

    MP = [450, 1260]
    无色消耗 = 5

    def 装备护石(self, char):
        self.倍率 *= 1.3
        self.CDR *= 0.9


class 技能21(被动技能):  # 风雷啸
    名称 = '风雷啸'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 3
    是否主动 = 1
    等级精通 = 40
    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.11 + 0.02 * self.等级, 5)


class 技能22(主动技能):  # 月华万象 二觉
    名称 = '月华万象'
    所在等级 = 85
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [0, 6147, 7572, 8997, 10423, 11849, 13274, 14699, 16124, 17550, 18974, 20401, 21826, 23252, 24677, 26103, 27529, 28955, 30377, 31804, 33229, 34655, 36080, 37506, 38932, 40358, 41782, 43209, 44632, 46058, 47483, 48909, 50335, 51760, 53186, 54612, 56037, 57463, 58887, 60314, 61738, 63163, 64589, 66015, 67440, 68866, 70291, 71718, 73141, 74567, 75993]
    hit0 = 12
    data1 = [0, 129091, 159025, 188959, 218893, 248828, 278761, 308694, 338630, 368563, 398498, 428431, 458366, 488300, 518235, 548167, 578103, 608036, 637972, 667905, 697839, 727772, 757708, 787642, 817577, 847509, 877445, 907378, 937313, 967247, 997180, 1027114, 1057049, 1086984, 1116917, 1146851, 1176785, 1206720, 1236655, 1266588, 1296522, 1326456, 1356390, 1386326, 1416259, 1446193, 1476127, 1506062, 1535996, 1565930, 1595864]
    hit1 = 1
    CD = 180

    MP = [500, 4480]
    无色消耗 = 10


class 技能23(被动技能):  # 禅意·万象 三觉被动
    名称 = '禅意·万象'
    所在等级 = 95
    等级上限 = 40
    学习间隔 = 3
    等级精通 = 30
    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)


class 技能24(主动技能):  # 禅语·形灭
    名称 = '禅语·形灭'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 5727, 6307, 6889, 7468, 8050, 8631, 9213, 9792, 10374, 10954, 11536, 12117, 12698, 13278, 13860, 14440, 15023, 15602, 16184, 16764, 17346, 17926, 18508, 19088, 19669, 20249, 20830, 21410, 21992, 22573, 23155, 23734, 24316, 24896, 25479, 26060, 26640, 27221, 27802, 28383, 28965, 29545, 30126, 30707, 31288, 31868, 32450, 33031, 33612, 34193]
    hit0 = 10
    data1 = [0, 57265, 63074, 68885, 74694, 80504, 86313, 92122, 97932, 103742, 109552, 115360, 121171, 126981, 132789, 138599, 144409, 150218, 156028, 161838, 167648, 173456, 179266, 185075, 190885, 196693, 202505, 208315, 214125, 219933, 225743, 231553, 237363, 243172, 248982, 254790, 260600, 266409, 272219, 278028, 283840, 289649, 295458, 301268, 307078, 312887, 318695, 324506, 330316, 336124, 341934]
    hit1 = 1
    风雷啸 = 1.7  # 风雷啸
    CD = 60.0

    MP = [773, 6000]
    无色消耗 = 7


class 技能25(主动技能):  # 禅念·归一 三觉
    名称 = '禅念·归一'
    所在等级 = 100
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [0, 369574, 455274, 540972, 626670, 712368, 798067, 883767, 969464, 1055163, 1140863, 1226561, 1312259, 1397957, 1483656, 1569356, 1655053, 1740752, 1826452, 1912150, 1997848, 2083546, 2169245, 2254945, 2340641, 2426341, 2512040, 2597738, 2683437, 2769135, 2854834, 2940534, 3026230, 3111930, 3197629, 3283328, 3369026, 3454724, 3540424, 3626120, 3711819, 3797518, 3883218, 3968916, 4054615, 4140313, 4226013, 4311710, 4397408, 4483107, 4568806]
    hit0 = 1
    data1 = [0, 41063, 50584, 60107, 69628, 79151, 88673, 98195, 107719, 117239, 126762, 136284, 145807, 155328, 164850, 174372, 183894, 193418, 202939, 212461, 221982, 231504, 241028, 250549, 260071, 269592, 279114, 288636, 298160, 307682, 317203, 326725, 336247, 345770, 355291, 364813, 374336, 383857, 393379, 402901, 412424, 421946, 431468, 440991, 450511, 460035, 469557, 479079, 488600, 498122, 507645]
    hit1 = 6
    CD = 290.0

    MP = [4027, 8054]
    无色消耗 = 15


class classChange(Character):
    def __init__(self, equVersion=""):
        self.实际名称 = 'nenmaster_male'
        self.名称 = '归元·气功师'
        self.角色 = '格斗家(男)'
        self.角色类型 = '输出'
        self.职业 = '气功师'
        # 用来筛CP武器的
        self.转职 = '气功师(男)'
        self.武器选项 = ['手套']
        self.输出类型选项 = ['魔法百分比']
        self.防具精通属性 = ['智力']
        self.类型 = '魔法百分比'
        self.武器类型 = '手套'
        self.防具类型 = '布甲'
        技能列表 = []
        技能序号 = {}
        i = 0
        while i >= 0:
            try:
                tem = eval('技能'+str(i)+'()')
                tem.基础等级计算()
                技能序号[tem.名称] = i
                技能列表.append(tem)
                i += 1
            except:
                i = -1
        self.技能栏 = 技能列表
        self.技能序号 = 技能序号
        self.buff = 1.43*1.21

        super().__init__(equVersion)

    def 职业特殊计算(self):

        念气波 = self.get_skill_by_name('念气波')
        蓄念炮倍率 = self.get_skill_by_name('蓄念炮').加成倍率(self.武器类型)

        念气波.倍率 /= 蓄念炮倍率
        念气波.蓄念炮加成 = 蓄念炮倍率

        pass

    def set_skill_info(self, info, rune_except=[], clothes_pants=[]):
        super().set_skill_info(info, clothes_pants=['远古记忆'])
